<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.5"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FreeRTOS Addons: cpp_freertos::WorkItem Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">FreeRTOS Addons
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.5 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespacecpp__freertos.html">cpp_freertos</a></li><li class="navelem"><a class="el" href="classcpp__freertos_1_1_work_item.html">WorkItem</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classcpp__freertos_1_1_work_item-members.html">List of all members</a>  </div>
  <div class="headertitle"><div class="title">cpp_freertos::WorkItem Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div></div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="workqueue_8hpp_source.html">workqueue.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a89e7d76c18f85c738215e6fe44f39f0f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcpp__freertos_1_1_work_item.html#a89e7d76c18f85c738215e6fe44f39f0f">WorkItem</a> (bool freeAfterComplete=false)</td></tr>
<tr class="separator:a89e7d76c18f85c738215e6fe44f39f0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9f7978be78e1a12cf3e20a7196d2066"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcpp__freertos_1_1_work_item.html#aa9f7978be78e1a12cf3e20a7196d2066">~WorkItem</a> ()</td></tr>
<tr class="separator:aa9f7978be78e1a12cf3e20a7196d2066"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab38768c98eba55fb35fab948a0856103"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcpp__freertos_1_1_work_item.html#ab38768c98eba55fb35fab948a0856103">FreeAfterRun</a> ()</td></tr>
<tr class="separator:ab38768c98eba55fb35fab948a0856103"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9671b0cf7d043ae9052c59acb5e8d397"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcpp__freertos_1_1_work_item.html#a9671b0cf7d043ae9052c59acb5e8d397">Run</a> ()=0</td></tr>
<tr class="separator:a9671b0cf7d043ae9052c59acb5e8d397"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p >This class encapsulates the idea of a discrete, non-repeating task. Create a <a class="el" href="classcpp__freertos_1_1_work_item.html">WorkItem</a> when there is something you need to do on a different <a class="el" href="classcpp__freertos_1_1_thread.html">Thread</a>, but doesn't have to happen periodically. This is a great construct for one off fire and forget tasks.</p>
<p >This is an abstract base class. To use this, you need to subclass it. All of your WorkItems should be derived from this class. Then implement the virtual Run function. This is a similar design to Java threading. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a89e7d76c18f85c738215e6fe44f39f0f" name="a89e7d76c18f85c738215e6fe44f39f0f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a89e7d76c18f85c738215e6fe44f39f0f">&#9670;&#160;</a></span>WorkItem()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">WorkItem::WorkItem </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>freeAfterComplete</em> = <code>false</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p >Our constructor.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">freeAfterComplete</td><td>If you pass in a true, you are requesing the <a class="el" href="classcpp__freertos_1_1_work_queue.html">WorkQueue</a> itself to delete this <a class="el" href="classcpp__freertos_1_1_work_item.html">WorkItem</a> after it has run it. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Only set freeAfterComplete = true if: 1) You dynamically allocated it (i.e. used "new") 2) After you call QueueWork() you promise never to touch this object again. </dd></dl>

</div>
</div>
<a id="aa9f7978be78e1a12cf3e20a7196d2066" name="aa9f7978be78e1a12cf3e20a7196d2066"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa9f7978be78e1a12cf3e20a7196d2066">&#9670;&#160;</a></span>~WorkItem()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">WorkItem::~WorkItem </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p >Our destructor. </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ab38768c98eba55fb35fab948a0856103" name="ab38768c98eba55fb35fab948a0856103"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab38768c98eba55fb35fab948a0856103">&#9670;&#160;</a></span>FreeAfterRun()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool WorkItem::FreeAfterRun </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p >Allows a client to decide if this <a class="el" href="classcpp__freertos_1_1_work_item.html">WorkItem</a> is marked for automatic deletion. </p>

</div>
</div>
<a id="a9671b0cf7d043ae9052c59acb5e8d397" name="a9671b0cf7d043ae9052c59acb5e8d397"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9671b0cf7d043ae9052c59acb5e8d397">&#9670;&#160;</a></span>Run()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void cpp_freertos::WorkItem::Run </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p >Implementation of your actual <a class="el" href="classcpp__freertos_1_1_work_item.html">WorkItem</a> function. You must override this function. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/<a class="el" href="workqueue_8hpp_source.html">workqueue.hpp</a></li>
<li>src/freertos-addon/c++/cworkqueue.cpp</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.5
</small></address>
</body>
</html>
